1Writer タスクを翌日に移動
1Writer タスクを翌日に移動2
2024/10/20
タスクをノート日付の翌日に移動
code:js
var dir = 'Dropbox/vault/'; // デイリーノートを置いているディレクトリを指定
// 1. カーソル行のテキストを取得
const cursorRange = editor.getSelectedLineRange(); // カーソル行の範囲を取得
const cursorLineText = editor.getTextInRange(cursorRange0, cursorRange1); // カーソル行のテキストを取得
let newTask = cursorLineText.trim(); // 空白を取り除いておく(不要な空白が入らないように)
// 2. カーソル行の削除
const start, end = editor.getSelectedLineRange(); // 現在の選択行の範囲を取得
editor.replaceTextInRange(start, end + 1, ""); // 改行も含めて完全に行を削除
editor.setSelectedRange(start); // 次の行の開始位置にカーソルを移動
// 3. 現在のノートのファイル名から日付を取得
const fileName = editor.getFileName(); // ファイル名を取得 (例: 2023-10-20.md)
// 正規表現でファイル名から日付部分を抽出
const dateMatch = fileName.match(/(\d{4})-(\d{2})-(\d{2})/);
if (!dateMatch) {
ui.hudError("ファイル名から日付を取得できませんでした。");
return;
}
// 抽出した日付を使ってDateオブジェクトを作成
let year = parseInt(dateMatch1, 10);
let month = parseInt(dateMatch2, 10) - 1; // JavaScriptの月は0始まり
let day = parseInt(dateMatch3, 10);
// 日付をベースにDateオブジェクトを作成し、翌日の日付を計算
let currentFileDate = new Date(year, month, day);
currentFileDate.setDate(currentFileDate.getDate() + 1); // 翌日に設定
// 新しい日付を取得
let nextYear = currentFileDate.getFullYear();
let nextMonth = ("0" + (currentFileDate.getMonth() + 1)).slice(-2); // 月を2桁に
let nextDay = ("0" + currentFileDate.getDate()).slice(-2); // 日を2桁に
// 4. 翌日のノートのファイル名を作成
let nextDayFileName = ${dir}${nextYear}-${nextMonth}-${nextDay}.md;
// 5. URLスキームを使って、翌日のノートにテキストを追記
let textToAppend = encodeURIComponent(newTask); // URLエンコード
let urlScheme = onewriter://x-callback-url/append?path=${nextDayFileName}&text=${textToAppend};
// 6. URLを開く(追記処理)
app.openURL(urlScheme);
// 7. 完了ポップアップ
ui.hudSuccess(${newTask}を翌日に移動しました。);